//
// SimSoC Initial software, Copyright © INRIA 2007, 2008, 2009, 2010
// LGPL license version 3
//

#include "ppcis_visitor.hpp"
#include "ppcis.hpp"
#include "ppcis_alu.hpp"
#include "ppcis_fpu.hpp"
#include "ppcis_loadstore.hpp"
#include "ppcis_misc.hpp"

namespace simsoc {

  // ppcis.hpp

  void PPC_InstructionVisitor::visit(PPC_Instruction &i) {
    error() <<"internal error: visitor not implemented for instruction: " <<i<<std::endl;
    exit(1);
  }

  void PPC_InstructionVisitor::visit(PPC_Undefined &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_Unpredictable &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_Nop &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_Break &i) {visit(*static_cast<PPC_Instruction*>(&i));}

  // ppcis_alu.hpp
  void PPC_InstructionVisitor::visit(PPC_add &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_add_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addc_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addco &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addco_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_adde &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_adde_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addic &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addic_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addis &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addme &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addme_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addmeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addmeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addze &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addze_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addzeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_addzeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_and &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_and_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_andc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_andc_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_andi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_andis_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cmp &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cmpi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cmpl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cmpli &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cntlzd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cntlzd_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cntlzw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cntlzw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crand &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crandc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_creqv &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crnand &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crnor &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_cror &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crorc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_crxor &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divd_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divdo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divdo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divdu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divdu_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divduo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divduo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwu_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwuo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_divwuo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_eqv &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_eqv_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsb &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsb_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsh &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsh_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_extsw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhd_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhdu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhdu_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhwu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulhwu_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulld &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulld_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulldo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulldo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mulli &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mullw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mullw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mullwo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mullwo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nand &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nand_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_neg &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_neg_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nego &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nego_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nor &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_nor_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_or &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_or_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_orc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_orc_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ori &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_oris &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldcl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldcl_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldcr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldcr_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldic &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldic_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldicl_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldicl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldicr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldicr_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldimi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rldimi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwimi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwimi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwinm &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwinm_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwnm &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rlwnm_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sld &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sld_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srad &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srad_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sradi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sradi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sraw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sraw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srawi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srawi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srd_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_srw_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subf_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfc_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfco &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfco_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfe &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfe_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfic &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfme &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfme_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfmeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfmeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfze &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfze_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfzeo &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_subfzeo_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_xor &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_xor_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_xori &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_xoris &i) {visit(*static_cast<PPC_Instruction*>(&i));}

  //ppcis_fpu.hpp
  void PPC_InstructionVisitor::visit(PPC_FP_Instruction &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fadd> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fadd_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fadds> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fadds_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fdiv> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fdiv_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fdivs> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fdivs_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fmul> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fmul_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fmuls> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fmuls_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fsub> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fsub_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fsubs> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic<PPC_fsubs_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic_1op<PPC_fsqrt> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic_1op<PPC_fsqrt_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic_1op<PPC_fsqrts> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPArithmetic_1op<PPC_fsqrts_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctid> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctid_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctidz> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctidz_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctiw> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctiw_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctiwz> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPConvert<PPC_fctiwz_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPCompare<PPC_fcmpo> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPCompare<PPC_fcmpu> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmadd> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmadd_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmadds> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmadds_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmsub> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmsub_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmsubs> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fmsubs_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmadd> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmadd_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmadds> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmadds_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmsub> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmsub_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmsubs> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_FPMultiAdd<PPC_fnmsubs_> &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fabs &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fabs_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fcfid &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fcfid_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fmr &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fmr_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fnabs &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fnabs_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fneg &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fneg_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fres &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fres_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_frsp &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_frsp_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_frsqrte &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_frsqrte_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fsel &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_fsel_ &i) {visit(*static_cast<PPC_FP_Instruction*>(&i));}

  //ppcis_loadstore.hpp
  void PPC_InstructionVisitor::visit(PPC_dcbf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_dcbst &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_dcbt &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_dcbtst &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_dcbz &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lbz &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lbzu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lbzux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lbzx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ld &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ldarx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ldu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ldux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ldx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfdu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfdux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfdx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfs &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfsu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfsux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lfsx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lha &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhau &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhaux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhax &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhbrx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhz &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhzu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhzux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lhzx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lmw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lswi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lswx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwa &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwarx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwaux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwax &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwbrx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwz &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwzu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwzux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_lwzx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stb &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stbu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stbux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stbx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_std &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stdcx_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stdu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stdux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stdx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfdu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfdux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfdx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfiwx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfs &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfsu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfsux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stfsx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sth &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sthbrx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sthu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sthux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sthx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stmw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stswi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stswx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stwbrx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stwcx_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stwu &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stwux &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_stwx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_dss &i) {visit(*static_cast<PPC_Instruction*>(&i));}

  //ppcis_misc.hpp
  void PPC_InstructionVisitor::visit(PPC_b &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ba &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bla &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bca &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bcl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bcla &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bcctr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bcctrl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bclr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_bclrl &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_eciwx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_ecowx &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_eieio &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_icbi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_isync &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mcrf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mcrfs &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mcrxr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfcr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfocrf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mffs &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mffs_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfmsr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfspr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfsr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mfsrin &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mftb &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtcrf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtocrf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsb0 &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsb0_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsb1 &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsb1_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsf &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsf_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsfi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtfsfi_ &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtmsr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtmsrd &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtspr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtsr &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_mtsrin &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_rfi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sc &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slbia &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slbie &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slbmfee &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slbmfev &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_slbmte &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_sync &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_td &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_tdi &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_tlbia &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_tlbie &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_tlbsync &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_tw &i) {visit(*static_cast<PPC_Instruction*>(&i));}
  void PPC_InstructionVisitor::visit(PPC_twi &i) {visit(*static_cast<PPC_Instruction*>(&i));}

} // namespace simsoc
